package com.erp.erp_servers.warehouse;

import com.erp.erp_entitys.warehouse.entity.OtherInStockEntity;
import com.erp.erp_entitys.warehouse.req.ImportCarryPlanReq;
import com.erp.erp_entitys.warehouse.req.ImportPurchaseReq;
import com.erp.erp_entitys.warehouse.req.OtherInStockPageListInfoReq;
import com.erp.erp_entitys.warehouse.rsp.ImportCarryPlanProductRsp;
import com.erp.erp_entitys.warehouse.rsp.ImportCarryPlanRsp;
import com.erp.erp_entitys.warehouse.rsp.ImportPurchaseProductRsp;
import com.erp.erp_entitys.warehouse.rsp.ImportPurchaseRsp;

import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName : IOtherInStockService
 * @Description : 其它入库主表接口
 * @Author : lst
 * @Date: 2021-03-24 18:20
 */
public interface IOtherInStockService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    OtherInStockEntity queryById(Integer id);


    /**
     * 通过实体作为筛选条件查询
     *
     * @param otherInStock 实例对象
     * @return 对象列表
     */
    List<OtherInStockEntity> queryAll(OtherInStockEntity otherInStock);

    /**
     * 新增数据
     *
     * @param otherInStock 实例对象
     * @return 影响行数
     */
    int insert(OtherInStockEntity otherInStock);

    /**
     * 修改数据
     *
     * @param otherInStock 实例对象
     * @return 影响行数
     */
    int update(OtherInStockEntity otherInStock);

    /**
     * 导采购信息
     * @param req 实例对象
     * @return 采购信息
     */
    List<ImportPurchaseRsp> getImportPurchaseInfo(ImportPurchaseReq req);

    /**
     * 导采购产品信息
     * @param id 采购主表id
     * @return 采购产品信息
     */
    List<ImportPurchaseProductRsp> getImportPurchaseProduct(Integer id);

    /**
     * 获取采购配件的平均价格
     * @param id 采购产品表主ID
     * @return 采购配件的平均价格
     */
    BigDecimal getPurchasePartsPrice(Integer id);

    /**
     * 根据合同号获取未采购配件次数
     * @param contractNo 合同号(外销合同号、备货合同号)
     * @return 未采购配件次数
     */
    int getUnPurchasePartsCount(String contractNo);


    /**
     * 其它入库导出运计划信息
     * @param req 实例对象
     * @return 其它入库导出运计划信息
     */
    List<ImportCarryPlanRsp> getImportCarryPlan(ImportCarryPlanReq req);

    /**
     * 导出运计划产品信息
     * @param id 出运计划id
     * @return 运计划产品信息
     */
    List<ImportCarryPlanProductRsp> getImportCarryPlanProduct(Integer id);

    /**
     * 首页分页查询
     * @param req 实例对象
     * @return 其它入库信息
     */
    List<OtherInStockEntity> getListByPage(OtherInStockPageListInfoReq req);

}
